package cn.tedu.csmall.product.service;

import cn.tedu.csmall.commons.pojo.vo.PageData;
import cn.tedu.csmall.product.pojo.param.CategoryAddNewParam;
import cn.tedu.csmall.product.pojo.param.CategoryUpdateInfoParam;
import cn.tedu.csmall.product.pojo.vo.CategoryListItemVO;
import cn.tedu.csmall.product.pojo.vo.CategoryStandardVO;
import cn.tedu.csmall.product.pojo.vo.CategoryTreeItemVO;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Transactional
public interface ICategoryService {

    /**
     * 类别“是否启用”的状态文本
     */
    String[] ENABLE_text={"禁用","启用"};

    /**
     * 禁用类别
     *
     * @param id 尝试禁用的类别的ID
     */
    void setDisable(Long id);

    /**
     * 启用类别
     *
     * @param id 尝试启用的类别的ID
     */
    void setEnable(Long id);

    /*添加类别*/
    void addNew(CategoryAddNewParam categoryAddNewParam);

    /*根据ID删除类别*/
    void delete(Long id);

    /**
     * 修改类别信息
     * @param id  被修改的类别数据的id
     * @param categoryUpdateInfoParam 类别的新数据
     */
    void updateInfoById(Long id, CategoryUpdateInfoParam categoryUpdateInfoParam);

    /**
     * 根据ID查看类别详情
     *
     * @param id 类别ID
     */
    CategoryStandardVO getCategoryStandardById(Long id);

    /**
     * 根据父级id查询子级类别列表
     * @param parentId 父级id
     * @return  返回匹配的自己类别集合
     */
    List<CategoryListItemVO> getCategoryListByParentId(Long parentId);

    /**
     * 获取类别树
     *
     */
    List<CategoryTreeItemVO> listTree();
}
